/*数据结构*/
#pragma once
#ifndef _SQ_STACK_H
#define _SQ_STACK_H

#include "stdlib.h"
#define OK 1
#define ERROR 0
typedef int Status;

//初始容量
#define STACK_INIT_SIZE  100
//每次扩容的大小
#define STACK_INCRMENT_SIZE  10

//这里栈既要存整形和浮点数（数栈）
//又要存字符（操作符栈 - 需要类型转换）
//所以定元素类型为double

typedef double ElemType;
typedef struct{
    //连续内存首地址
    ElemType *base;
    //栈顶指针（这里指定为指向将要添加元素的位置）
    ElemType *top;
    //元素个数
    int size;
}SqStack;

//初始化
void init(SqStack& s);

//得到栈顶元素
Status getTop(SqStack& s, ElemType& e);

//入栈
Status push(SqStack& s, ElemType e);

//出栈
Status pop(SqStack& s, ElemType& e);

//清空栈
void clear(SqStack& s);
//得到栈中元素个数
int getSize(SqStack& s);
//栈空
bool isEmpty(SqStack s);

#endif // !_SQ_STACK_H